July 31, 2025

Auto Scaling

📘 ¿Qué es AWS Auto Scaling?

Auto Scaling es un conjunto de servicios que permite ajustar automáticamente la capacidad de recursos (como EC2, ECS, DynamoDB o Aurora) según la demanda real, garantizando disponibilidad y optimización de costos.

🧠 Escala horizontal automática: Aumenta o reduce el número de recursos.


🔧 Tipos de Auto Scaling

Tipo de servicioNombreQué escala
EC2EC2 Auto Scaling GroupsNúmero de instancias EC2
ECSECS Service Auto ScalingNúmero de tareas
DynamoDBDynamoDB Auto ScalingThroughput (Read/Write Capacity)
AuroraAurora Auto ScalingNúmero de réplicas
Application ScalingAWS Application Auto ScalingEscala personalizado (EMR, Sagemaker, etc.)

🧱 EC2 Auto Scaling Groups (ASG)

🔹 Componentes clave:

ComponenteDescripción
Launch TemplateDefine configuración de instancias (AMI, tipo, user data)
ASG (Auto Scaling Group)Grupo de instancias EC2 gestionadas automáticamente
Scaling PoliciesReglas para aumentar/disminuir la capacidad
Lifecycle HooksEjecuta acciones cuando una instancia entra/sale del grupo
Health ChecksDetecta instancias no saludables
Cooldown PeriodEspera entre acciones de escalado

📈 Tipos de escalado (EC2 ASG)

Tipo de escaladoDescripción
ManualEl usuario ajusta el tamaño del grupo
ProgramadoBasado en fecha/hora (cron)
DinámicoBasado en métricas como CPU, tráfico, etc.
PredictivoUsa machine learning para predecir necesidades futuras (EC2 solo)

📊 Ejemplo de política de escalado dinámico

Escalar si CPU > 70% durante 5 minutos +1 instancia
Reducir si CPU < 30% durante 5 minutos -1 instancia

🚀 Cómo funciona EC2 Auto Scaling

1. Creas un Launch Template (tipo de instancia, AMI, etc.)
2. Definís un Auto Scaling Group (min, max, desired capacity)
3. Asociás políticas de escalado (dinámicas, programadas o predictivas)
4. El grupo lanza/termina instancias según demanda o eventos

🛠️ Ejemplo básico de ASG (CLI)

# Crear Launch Template
aws ec2 create-launch-template \
  --launch-template-name myTemplate \
  --version-description v1 \
  --launch-template-data file://template.json

# Crear Auto Scaling Group
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name myASG \
  --launch-template LaunchTemplateName=myTemplate,Version=1 \
  --min-size 1 --max-size 5 --desired-capacity 2 \
  --vpc-zone-identifier subnet-xxxx,subnet-yyyy

# Añadir política de escalado
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name myASG \
  --policy-name ScaleOut \
  --scaling-adjustment 1 \
  --adjustment-type ChangeInCapacity

🌐 Load Balancers + Auto Scaling

  • Auto Scaling se integra directamente con ELB (ALB, NLB).

  • Instancias nuevas se registran automáticamente al balanceador.

  • Usa health checks de ELB o EC2 para reemplazar instancias fallidas.


🔐 Seguridad

  • IAM Roles para Auto Scaling (acceso a EC2, CloudWatch, ELB)

  • Security Groups para instancias

  • Launch Templates con claves de acceso y políticas adecuadas


🔄 Auto Scaling vs. Elastic Load Balancing (ELB)

ServicioFunción principal
Auto ScalingEscala el número de instancias
Elastic Load BalancerDistribuye tráfico entre instancias

Trabajan juntos para garantizar alta disponibilidad y balanceo de carga.


📈 Métricas comunes para escalar

ServicioMétrica usada comúnmente
EC2CPUUtilization, NetworkIn/Out
ECSMemoryUtilization, CPUUtilization
DynamoDBConsumedReadCapacityUnits
AuroraCPU, conexión, latencia de lectura

📊 Auto Scaling Predictivo (EC2)

  • Usa machine learning para prever carga futura

  • Requiere al menos 24h de datos de métricas

  • Activado desde consola o CLI con opción predictive-scaling-mode


💡 Buenas prácticas

  • Usa métricas relevantes para la app (CPU, latency, RPS, etc.)

  • Siempre usar ELB para distribuir tráfico

  • Define CooldownPeriod para evitar ciclos de escalado repetidos

  • Usa termination policies para definir qué instancia terminar primero

  • Activa instance protection en instancias críticas


⚖️ Comparación rápida

Servicio AutoescaladoEscala quéCosteComentario
EC2 Auto ScalingNº de instanciasPor EC2Ideal para backend/frontends
ECS Auto ScalingNº de tareasPor FargateEscala microservicios
DynamoDBCapacidad de lectura/escrituraIncluidoRequiere modo on-demand o provisioned
Aurora ReplicaRéplicasPor usoSólo para Aurora
Redshift Concurrency ScalingSlots de ejecución adicionalesPor segundoSólo cuando hay carga alta

🎓 Preguntas tipo certificación

  1. ¿Qué necesitas para que una instancia EC2 escale automáticamente?

    • ✅ Launch Template y Auto Scaling Group
  2. ¿Cuál es la diferencia entre Scaling Policy y Scheduled Action?

    • ✅ Una responde a métricas, la otra a tiempo
  3. ¿Auto Scaling puede integrarse con ALB?

    • ✅ Sí, para distribuir tráfico automáticamente
  4. ¿Qué función cumple el cooldown period?

    • ✅ Evita escalado excesivo tras una acción reciente
  5. ¿Cuál es la forma más rentable de escalar cargas variables?

    • ✅ Auto Scaling dinámico o predictivo

📚 Recursos útiles